The software architecture for micro services based applications requires splitting a monolithic application into small pieces where each single component provides part of the overall application capabilities. In order to provide desired micro services, each part could use other micro services as well as external services. For example, in a cloud architecture, each micro service may be deployed on any node within the cloud. The micro services have several advantages, such as allowing developers to update single small parts without affecting the entire application. However, deploying the multiple micro services in more wide topologies is complex and more difficult than deploying a single monolithic application.